#define __SDCC_FLOAT_LIB
#include <float.h>

#ifdef FLOAT_ASM_MCS51

static void dummy( void ) __naked {
  __asm
  .globl	fs_normalize_a
  fs_normalize_a:
  #ifdef FLOAT_SHIFT_SPEEDUP
  mov	r0, #4
  mov	a, r4
  00001$:
  jnz	00003$
  mov	a, exp_a
  add	a, #248
  jnc	00002$	;
  denormalized
  mov	exp_a, a
  clr	a
  xch	a, r1
  xch	a, r2
  xch	a, r3
  mov	r4, a
  //mov	r4, ar3
  //mov	r3, ar2
  //mov	r2, ar1
  //mov	r1, #0
  djnz	r0, 00001$
  ret
  #endif
  00002$:
  mov	a, r4
  00003$:
  mov	r0, #32
  inc	exp_a
  00004$:
  jb	acc.7, 00006$
  djnz	exp_a, 00005$
  ret			;
  denormalized
  00005$:
  clr	c
  mov	a, r1
  rlc	a
  mov	r1, a
  mov	a, r2
  rlc	a
  mov	r2, a
  mov	a, r3
  rlc	a
  mov	r3, a
  mov	a, r4
  rlc	a
  mov	r4, a
  djnz	r0, 00004$
  00006$:
  dec	exp_a
  ret
  __endasm;
}

#endif
